package pck_tramitedocu.pck_web;

import java.io.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Borrador;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Copia_Documento;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Documento_Vista_Previa;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Email;
import pck_tramitedocu.pck_src.pck_pojos.Cls_Trabajador;
import pck_tramitedocu.pck_src.pck_pojos.Cls_documento;
import pck_tramitedocu.pck_src.pck_pojos.Cls_documento_extension;
import pck_tramitedocu.pck_src.pck_pojos.TramiteDocuException;
import pck_tramitedocu.pck_src.pck_utiles.*;
import pck_tramitedocu.pck_src.pck_utiles.enums.TipoEmailElementsEnum;
import pck_tramitedocu.pck_web.pck_utiles.Cls_UtilesParaWeb;

public class svl_gestion_facade_web_documento extends HttpServlet {

    private ServletConfig conf;
    private static ServletConfig confStatic;

    public void init(ServletConfig config)
            throws ServletException {
        super.init(config);
        confStatic = config;
        this.conf = config;
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String data_json = "";
        try {
            int opt = Integer.parseInt(request.getParameter("opt"));
            switch (opt) {
                case 1:
                    data_json = generarDocumento(request);
                    break;
                case 2:
                    data_json = cargarDocumentos(request);
                    break;
                case 3:
                    data_json = cargarDocumentoConTodaInformacion(request);
                    break;
                case 4:
                    data_json = cargarDocumentosPersonales(request);
                    break;
                case 5:
                    data_json = enviarMailDocumentos(request);
                    break;
                case 6:
                    data_json = enviarMailDocumentos(request);
                    break;
                case 7:
                    data_json = obtenerDocumentoComoBandeja(request);
                    break;
                case 8:
                    data_json = actualizarBandeja(request);
                    break;
                case 9:
                    data_json = delegaDocumentoBandejaSvl(request);
                    break;
                case 10:
                    data_json = generarResolucionSvl(request);
                    break;
                case 11:
                    data_json = dispararDocumentoVistoSvl(request);
                    break;
                case 12:
                    data_json = darVistoDocumentoSvl(request);
                    break;
                case 13:
                    data_json = obtenerVistoDocumentoSvl(request);
                    break;
                case 14:
                    data_json = cerrarDocumentoSvl(request);
                    break;
                case 15:
                    data_json = aprobarDocumentoSvl(request);
                    break;
                case 16:
                    data_json = obtenerNotificacionesSvl(request);
                    break;
                case 17:
                    data_json = actualizarVistoDocumentoSvl(request);
                    break;
                case 18:
                    data_json = dispararDocumentoVistoRechazadoSvl(request);
                    break;
                case 19:
                    data_json = darPermisosImpresionSvl(request);
                    break;
                case 20:
                    data_json = darPermisosModificarSvl(request);
                    break;
                case 21:
                    data_json = generarVistaPreviaSvl(request);
                    break;
                case 22:
                    data_json = imprimirDocumentoSvl(request);
                    break;
                case 23:
                    data_json = obtenerDestinatariosDeDerivacionSvl(request);
                    break;
                case 24:
                    data_json = enviarCopiaParaEmailDesdeDerivacionSvl(request);
                    break;
                case 25:
                    data_json = generarBorradorSvl(request);
                    break;
                case 26:
                    data_json = eliminarBorradorSvl(request);
                    break;
                case 27:
                    data_json = cargarDocumentosProyectos(request);
                    break;
                case 28:
                    data_json = solicitarResponsableDeModificar(request);
                    break;
                case 98:
                    data_json = obtenerHistorialDocumentoEncSvl(request);
                    break;
                case 99:
                    data_json = obtenerHistorialDocumentoSvl(request);
                    break;
                case 100:
                    data_json = obtenerCantidadHistorialEncSvl(request);
                    break;
                case 101:
                    data_json = obtenerCantidadHistorialSvl(request);
                    break;
                case 102:
                    data_json = obtenerCabeceraParaConsultaHistorial(request);
                    break;
            }
            out.print(data_json);

        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            out.close();
        }
    }

    private String obtenerDestinatariosDeDerivacionSvl(HttpServletRequest request) {
        String[] parametrosParaFacade_01 = {"mp_cod_format", request.getParameter("fadfdsfsdfadsae1e21312321")};
        Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01});
        try {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.facadeInterface.obtenerDestinatariosDeDerivacionFacade(map)));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
    }

    private String generarVistaPreviaSvl(HttpServletRequest request) {
        String dni_trabajador_session = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getCodigo();
        String nombre_documento = request.getParameter("etqywkyeuriygdshfd");
        String codigo_tipo_documento = request.getParameter(Cls_Parametros.Request_Docu_TIPO_DOCUMENTO);
        String referencia_documento = request.getParameter("xzcsdfsdf");
        String destinatarios_documento = request.getParameter("fadfdsfsdfadsae1e21312321dsdaad");
        String asunto_documento = request.getParameter("dgdfgdghggf");
        String fecha_documento = cls_utilitarios.obtenerFechaActualFormateada();
        String cuerpo_documento = request.getParameter(Cls_Parametros.Request_Docu_CUERPO);
        String firma_documento = request.getParameter("dsdasdavfdsgdfgdasddgsfds_32143");
        String copia_documento = request.getParameter(Cls_Parametros.Request_Docu_COPIA_A);
        String plazo = plazo = request.getParameter("plazo");
        String adjuntos = request.getParameter("adjuntos");

        Cls_Documento_Vista_Previa documento_vista_previa = new Cls_Documento_Vista_Previa();
        documento_vista_previa.setAnhio(svl_gestion_facade_web_tablas.obtenerNombreTipoAnhio("" + Calendar.getInstance().get(1)));
        documento_vista_previa.setAsunto(cls_utilitarios.utf8_decode(asunto_documento));
        documento_vista_previa.setCabecera(cls_utilitarios.utf8_decode(nombre_documento.toUpperCase()));
        documento_vista_previa.setCodigo(codigo_tipo_documento);
        documento_vista_previa.setCuerpo(cls_utilitarios.utf8_decode(cuerpo_documento));
        documento_vista_previa.setReferencias(cls_utilitarios.utf8_decode(referencia_documento));
        documento_vista_previa.setDestinatarios(cls_utilitarios.utf8_decode(destinatarios_documento));
        documento_vista_previa.setFecha(fecha_documento);
        documento_vista_previa.setFirma(cls_utilitarios.utf8_decode(firma_documento));
        documento_vista_previa.setConCopia(cls_utilitarios.utf8_decode(copia_documento));
        documento_vista_previa.setPlazo(plazo);
        documento_vista_previa.setAdjuntos(adjuntos);

        if (codigo_tipo_documento.compareToIgnoreCase("001") == 0) {
            String articulo_documento_tmp = "";
            String[] articulos_documento = request.getParameter("xzcsdfsdfdsafdsfjsdfdsadaada").split("what_is_your_name");
            for (String articulo : articulos_documento) {
                articulo = cls_utilitarios.utf8_decode(articulo);
                String[] contenido_cada_articulo = articulo.split("delimit_for_articuls");
                try {
                    articulo_documento_tmp = articulo_documento_tmp + "&nbsp&nbsp&nbsp&nbsp" + contenido_cada_articulo[0] + "&nbsp;";
                    articulo_documento_tmp = articulo_documento_tmp + "<br>" + contenido_cada_articulo[1];
                    articulo_documento_tmp = articulo_documento_tmp + "<br><br>";
                } catch (ArrayIndexOutOfBoundsException ex) {
                    articulo_documento_tmp = articulo_documento_tmp + "<br>";
                    articulo_documento_tmp = articulo_documento_tmp + "<br><br>";
                }
            }
            documento_vista_previa.setArticulos(articulo_documento_tmp);
        }
        String nombre_archivo = codigo_tipo_documento + "-" + dni_trabajador_session + "-" + new Random().nextInt(500) + 10;
        String retorno;
        try {
            retorno = crearDocumentoVistaPrevia(nombre_archivo, documento_vista_previa);
            /*
             * 203
             */
            if (retorno != null) {
                retorno = "1-" + retorno;
            } else {
                throw new NullPointerException();
            }
        } catch (TramiteDocuException ex) {
            /*
             * 206
             */ retorno = "0-ERROR-" + ex.getUserException();
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(retorno));
    }

    private String darPermisosModificarSvl(HttpServletRequest request) {
        /*
         * 212
         */ String data_trabajador_origen = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado();
        /*
         * 213
         */ String data_trabajador_destino = request.getParameter("dsadadad321ashglkdjhdhasjjkhdsfa");
        /*
         * 214
         */ String observacion = request.getParameter("etqywkyeuriygdshfddsafsdg12321321");
        /*
         * 215
         */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        /*
         * 216
         */ String[] codigo_array = codigo_palito.split("-");
        /*
         * 217
         */ String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        /*
         * 218
         */ String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        /*
         * 219
         */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        /*
         * 220
         */ String[] parametrosParaFacade_04 = {"mp_trabajad_orig", data_trabajador_origen};
        /*
         * 221
         */ String[] parametrosParaFacade_05 = {"mp_trabajad_dest", data_trabajador_destino};
        /*
         * 222
         */ String[] parametrosParaFacade_06 = {"param_observacion_imp", observacion};
        /*
         * 223
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04, parametrosParaFacade_05, parametrosParaFacade_06});
        try {
            /*
             * 224
             */
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.facadeInterface.darPermisosModificarFacade(map)));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
    }

    private String darPermisosImpresionSvl(HttpServletRequest request) {
        /*
         * 227
         */ String data_trabajador_origen = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado();
        /*
         * 228
         */ String data_trabajador_destino = request.getParameter("dsadadad321ashglkdjhdhasjjkhdsfa");
        /*
         * 229
         */ String observacion = request.getParameter("etqywkyeuriygdshfddsafsdg12321321");
        /*
         * 230
         */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        /*
         * 231
         */ String[] codigo_array = codigo_palito.split("-");
        /*
         * 232
         */ String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        /*
         * 233
         */ String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        /*
         * 234
         */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        /*
         * 235
         */ String[] parametrosParaFacade_04 = {"mp_trabajad_orig", data_trabajador_origen};
        /*
         * 236
         */ String[] parametrosParaFacade_05 = {"mp_trabajad_dest", data_trabajador_destino};
        /*
         * 237
         */ String[] parametrosParaFacade_06 = {"param_observacion_imp", observacion};
        /*
         * 238
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04, parametrosParaFacade_05, parametrosParaFacade_06});
        try {
            /*
             * 239
             */
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.facadeInterface.darPermisosImprimirFacade(map)));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
    }

    private String actualizarVistoDocumentoSvl(HttpServletRequest request) {
        /*
         * 243
         */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        /*
         * 244
         */ String[] codigo_array = codigo_palito.split("-");
        /*
         * 245
         */ String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        /*
         * 246
         */ String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        /*
         * 247
         */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        /*
         * 248
         */ String[] parametrosParaFacade_04 = {"tipo_docu_cabe", request.getParameter("etqywkyeuriygdshfd")};
        /*
         * 249
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04});
        try {
            /*
             * 250
             */
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.facadeInterface.actualizarDocumentoVistoFacade(map)));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(ex.getUserException()));
        }
    }

    private String obtenerNotificacionesSvl(HttpServletRequest request) {
        String data_trabajador = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getCodigo();
        String[] parametrosParaFacade_01 = {"mp_dni", data_trabajador};
        Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01});
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.facadeInterface.obtenerNotificacionesFacade(map)));
    }

    private String aprobarDocumentoSvl(HttpServletRequest request) {
        /*
         * 260
         */ String data_trabajador = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado();
        /*
         * 261
         */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        /*
         * 262
         */ String[] codigo_array = codigo_palito.split("-");
        /*
         * 263
         */ String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        /*
         * 264
         */ String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        /*
         * 265
         */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        /*
         * 266
         */ String[] parametrosParaFacade_04 = {"mp_trabajad", data_trabajador};
        /*
         * 267
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04});

        String mensaje;
        try {
            /*
             * 269
             */ mensaje = svl_gestion_facade_web.facadeInterface.aprobarDocumentoFacade(map);
            /*
             * 270
             */ if (mensaje.startsWith("1")) {
                /*
                 * 271
                 */ map.put("mp_cod_format", request.getParameter("fadfdsfsdfadsae1e21312321"));
                /*
                 * 272
                 */ actualizarBandejaGeneral(map);
            }
        } catch (TramiteDocuException ex) {
            mensaje = "0-ERROR-" + ex.getUserException();
        }
        /*
         * 274
         */ return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(mensaje));
    }

    private String cerrarDocumentoSvl(HttpServletRequest request) {
        String data_trabajador = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado();
        String codigo_largo = request.getParameter(Cls_Parametros.Request_Codigo_LARGO_DOCUMENTO);
        String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        String[] codigo_array = codigo_palito.split("-");
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        Map map = cls_utilitarios.generarHashMapParaRequest(parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03);
        String respuesta;
        try {
            Cls_documento documento = cargarDocumentoConTodaInformacionObject(request);
            map.put(Cls_Parametros.Map_TRABAJADOR_DATA, data_trabajador);
            map.put(Cls_Parametros.Map_OBJETO_DOCUMENTO, documento);
            respuesta = svl_gestion_facade_web.getFacade().cerrarDocumentoFacade(map);
            svl_gestion_facade_web_documento.crearDocumento(codigo_palito);
            svl_gestion_genera_flash.generarFlash(new Cls_Seguridad_DESBase64().encriptar(codigo_palito));
            map.put(Cls_Parametros.Map_CODIGO_DOCUMENTO_FORMATEADO, codigo_largo);
            actualizarBandejaGeneral(map);

            documento.getCon_copia_usuarios();

            Cls_Email mail = new Cls_Email();
            mail.setMensateSubject(documento.getCabecera());
            ArrayList array_mail = new ArrayList();
            for (Cls_Copia_Documento document : documento.getCon_copia_usuarios()) {
                array_mail.add(document.getDireccion_electronica());
            }
            mail.setEmail(array_mail);
            Map mp = new HashMap();
            mp.put("tipo_docu_cabe", documento.getCabecera().replace("°", "."));
            mp.put("mp_asunto", documento.getAsunto());
            mp.put("object_mail", mail);
            mp.put("mp_cod_format", new Cls_Seguridad_DESBase64().encriptar(documento.obtenerCodigoConcatenado()));
            enviarMailFacade(mp);
        } catch (TramiteDocuException ex) {
            respuesta = "0-ERROR-ERROR: " + ex.getUserException();
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(respuesta));
    }

    private String obtenerVistoDocumentoSvl(HttpServletRequest request) {
        /*
         * 316
         */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        /*
         * 317
         */ String[] codigo_array = codigo_palito.split("-");
        /*
         * 318
         */ String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        /*
         * 319
         */ String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        /*
         * 320
         */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        /*
         * 321
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03});
        try {
            /*
             * 322
             */
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.getFacade().obtenerVistoDocumentoFacade(map)));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
    }

    private String obtenerHistorialDocumentoSvl(HttpServletRequest request) {
        try {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.getFacade().obtenerHistorialDocumentoFacade(cls_utilitarios.generarHashMapParaConsultaHistorial(request, "-"))));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
    }

    private String obtenerCabeceraParaConsultaHistorial(HttpServletRequest request) {
        try {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.getFacade().obtenerCabeceraHistorialDocumentoFacade(cls_utilitarios.generarHashMapParaConsultaHistorial(request, ";"))));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }

    }

    private String obtenerCantidadHistorialSvl(HttpServletRequest request) {
        try {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.getFacade().obtenerCantidadHistorialFacade(cls_utilitarios.generarHashMapParaConsultaHistorial(request, "-"))));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
    }

    private String obtenerHistorialDocumentoEncSvl(HttpServletRequest request) {

        try {

            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.getFacade().obtenerHistorialDocumentoFacade(cls_utilitarios.generarHashMapParaConsultaHistorial(request, ";"))));
        } catch (NumberFormatException ex) {
        } catch (ArrayIndexOutOfBoundsException ex) {
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
        /*
         * 346
         */ return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(null));
    }

    private String obtenerCantidadHistorialEncSvl(HttpServletRequest request) {
        try {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.getFacade().obtenerCantidadHistorialFacade(cls_utilitarios.generarHashMapParaConsultaHistorial(request, ";"))));
        } catch (NumberFormatException ex) {
        } catch (ArrayIndexOutOfBoundsException ex) {
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
        /*
         * 346
         */ return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(0));
    }

    private String darVistoDocumentoSvl(HttpServletRequest request) {
        /*
         * 350
         */ String codigo_largo = request.getParameter("fadfdsfsdfadsae1e21312321");
        /*
         * 351
         */ String data_trabajador = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado();
        /*
         * 352
         */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        /*
         * 353
         */ String detalle = request.getParameter("dgdfgdghggf");
        /*
         * 354
         */ String[] codigo_array = codigo_palito.split("-");
        /*
         * 355
         */ String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        /*
         * 356
         */ String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        /*
         * 357
         */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        /*
         * 358
         */ String[] parametrosParaFacade_04 = {"mp_trabajad", data_trabajador};
        /*
         * 359
         */ String[] parametrosParaFacade_05 = {"mp_asunto", detalle};
        /*
         * 360
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04, parametrosParaFacade_05});
        /*
         * 361
         */ String retorno;
        try {
            retorno = svl_gestion_facade_web.getFacade().darVistoDocumentoDesdeBandejaParaRespuestaBusiness(map);
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }

        /*
         * 363
         */ map.put("mp_cod_format", codigo_largo);
        /*
         * 364
         */ map.put("mp_trabajad", data_trabajador);
        /*
         * 365
         */ actualizarBandejaGeneral(map);

        /*
         * 367
         */ return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(retorno));
    }

    private String dispararDocumentoVistoSvl(HttpServletRequest request, String... dat) {
        /*
         * 370
         */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        /*
         * 371
         */ if (dat.length != 0) {
            /*
             * 372
             */ codigo_palito = dat[0];
        }
        /*
         * 374
         */ String[] codigo_array = codigo_palito.split("-");
        /*
         * 375
         */ String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        /*
         * 376
         */ String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        /*
         * 377
         */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        /*
         * 378
         */ String[] parametrosParaFacade_04 = {"mp_trabajad", ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado()};
        /*
         * 379
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04});
        /*
         * 380
         */ String retorno;
        try {
            retorno = svl_gestion_facade_web.getFacade().dipararDocumentoDesdeBandejaParaVistoFacade(map);
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
        /*
         * 381
         */ if (retorno.startsWith("1")) {
            /*
             * 382
             */ map.put("mp_cod_format", request.getParameter("fadfdsfsdfadsae1e21312321"));
            /*
             * 383
             */ actualizarBandejaGeneral(map);
        }
        /*
         * 385
         */ return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(retorno));
    }

    private String dispararDocumentoVistoRechazadoSvl(HttpServletRequest request, String... dat) {
        String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        if (dat.length != 0) {
            codigo_palito = dat[0];
        }
        String[] codigo_array = codigo_palito.split("-");
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
        String[] parametrosParaFacade_04 = {"mp_trabajad", ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado()};
        String[] parametrosParaFacade_05 = {"mp_destinatarios", request.getParameter(Cls_Parametros.Request_Docu_DESTINATARIOS)};
        Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04, parametrosParaFacade_05});
        String retorno;
        try {
            retorno = svl_gestion_facade_web.getFacade().dipararDocumentoDesdeBandejaParaVistoRechazadosFacade(map);
            if (retorno.startsWith("1")) {
                map.put("mp_cod_format", request.getParameter("fadfdsfsdfadsae1e21312321"));
                actualizarBandejaGeneral(map);
            }
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(retorno));
    }

    private String guardarExtensionDeArchivoAdjuntoDeDocumento(String dat, HttpServletRequest request) {
        StringBuffer stri = new StringBuffer();
        for (Cls_documento_extension exte : (ArrayList<Cls_documento_extension>) request.getSession().getAttribute("usuarioObjetoList")) {
            stri.append(exte.getNombre());
        }
        String extension = stri.toString();
        String[] parametrosParaFacade_01 = {"mp_cod_format", dat};
        String[] parametrosParaFacade_02 = {"object_extension", extension};
        Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02});
        String retorno = svl_gestion_facade_web.getFacade().agregarDocumentoExtensionFacade(map);
        return retorno;
    }

    private String generarResolucionSvl(HttpServletRequest request) {
        Cls_Trabajador trabajador = (Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO);
        Cls_documento documento = new Cls_documento();
        boolean va_a_proyectar_documento = false;
        String respuesta;
        if (request.getParameter(Cls_Parametros.Request_IS_PROYECTADO) != null) {
            va_a_proyectar_documento = Boolean.parseBoolean(request.getParameter(Cls_Parametros.Request_IS_PROYECTADO));
            if (request.getParameter(Cls_Parametros.Request_TIPO_PROYECCION) != null) {
                documento.setTipo_proyeccion(request.getParameter(Cls_Parametros.Request_TIPO_PROYECCION));
            }
        }
        documento.setTipo_documento(request.getParameter(Cls_Parametros.Request_Docu_TIPO_DOCUMENTO));
        documento.setAsunto(request.getParameter(Cls_Parametros.Request_Docu_ASUNTO));
        documento.setCuerpo(request.getParameter(Cls_Parametros.Request_Docu_CUERPO));
        documento.setArticulosString(request.getParameter("xzcsdfsdfdsafdsfjsdfdsadaada").split("what_is_your_name"));
        documento.setCon_copia_usuarios(request.getParameter(Cls_Parametros.Request_Docu_COPIA_A).split(";"));
        documento.setIsProyectado(va_a_proyectar_documento);
        documento.setUsuario_logueado(trabajador.obtenerInformacionParaUsuarioLogueado());
        documento.setCodigo_directiva(va_a_proyectar_documento ? request.getParameter("vfdsgdfgdasddgsfds_32143").split(";") : (trabajador.getCodigo_area() + "|" + trabajador.getArea() + "|" + trabajador.getCodigo_visto_bueno() + "|;").split(";"));

        documento.setFirma(va_a_proyectar_documento ? request.getParameter("dsdasdavfdsgdfgdasddgsfds_32143") : ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerFirmaDocumento());

        boolean va_a_modificar = false;
        try {
            if (("" + request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO)).trim().length() != 0) {
                String[] codigo = ("" + request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO)).trim().split(";");
                documento.setNumero_documento(Integer.parseInt(codigo[0]));
                documento.setAnhio(codigo[1]);
                va_a_modificar = true;
            }
        } catch (NumberFormatException ex) {
            ex.printStackTrace();
        }
        try {
            respuesta = va_a_modificar
                    ? svl_gestion_facade_web.facadeInterface.actualizarDocumentoFacade(documento)
                    : svl_gestion_facade_web.facadeInterface.agregarDocumentoFacade(documento);

            String solo_codigo = "";
            if (va_a_modificar) {
                solo_codigo = documento.obtenerCodigoConcatenado();
                respuesta = "M-" + solo_codigo;
            } else {
                solo_codigo = respuesta.substring(respuesta.lastIndexOf(Cls_Parametros.CHARACTER_SEPARATOR_UNKNOW),
                        respuesta.length()).substring(Cls_Parametros.CHARACTER_SEPARATOR_UNKNOW.length());
            }
            respuesta = (respuesta.startsWith("M-") ? "" : "O-")
                    + respuesta + "#" + new Cls_Seguridad_DESBase64().encriptar(solo_codigo);
            String codigo_largo = request.getParameter("fadfdsfsdfadsae1e21312321");
            if (codigo_largo.length() != 0) {
                Map map = new HashMap();
                map.put("mp_cod_format", codigo_largo);
                map.put("mp_trabajad", trabajador.obtenerInformacionParaUsuarioLogueado());

                actualizarBandejaGeneral(map);
            }
            crearDocumento(solo_codigo);
        } catch (TramiteDocuException ex) {
            respuesta = "0-ERROR-ERROR: " + ex.getUserException();
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(respuesta));
    }

    private String delegaDocumentoBandejaSvl(HttpServletRequest request) {
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO)};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_DESTINATARIOS, request.getParameter(Cls_Parametros.Request_Docu_DESTINATARIOS)};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_TRABAJADOR_DATA, ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado()};
        String[] parametrosParaFacade_04 = {Cls_Parametros.Map_CODIGO_OBSERVACION, request.getParameter(Cls_Parametros.Request_OBSERVACIONES)};
        String[] parametrosParaFacade_05 = {Cls_Parametros.Map_TIPO_DERIVACION, request.getParameter(Cls_Parametros.Request_TIPO_DERIVACION)};
        Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04, parametrosParaFacade_05});
        cls_json_data json_data;
        try {
            String mensaje = svl_gestion_facade_web.facadeInterface.delegarDocumentoDesdeBandejaFacade(map);
            if (mensaje.startsWith("1")) {
                map.put(Cls_Parametros.Map_CODIGO_DOCUMENTO_FORMATEADO, request.getParameter(Cls_Parametros.Request_Codigo_LARGO_DOCUMENTO));
                actualizarBandejaGeneral(map);
            }
            json_data = new cls_json_data(mensaje);
        } catch (TramiteDocuException ex) {
            json_data = new cls_json_data("0-ERROR-" + ex.getUserException());
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(json_data);
    }

    private String actualizarBandeja(HttpServletRequest request) {
        /*
         * 494
         */ String[] parametrosParaFacade_01 = {"mp_cod_format", request.getParameter("fadfdsfsdfadsae1e21312321")};
        /*
         * 495
         */ String observaciones = request.getParameter("etqywkyeuriygdshfddsafsdg12321321");
        /*
         * 496
         */ String[] parametrosParaFacade_02 = {"mp_trabajad", ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado()};
        /*
         * 497
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02});
        /*
         * 498
         */ String mensaje_bandeja = actualizarBandejaGeneral(map);
        String retorno_historial;
        /*
         * 499
         */ if (mensaje_bandeja.indexOf("1|") != -1) {
            /*
             * 500
             */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
            /*
             * 501
             */ String[] codigo_array = codigo_palito.split("-");
            /*
             * 502
             */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
            /*
             * 503
             */ String[] parametrosParaFacade_04 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
            /*
             * 504
             */ String[] parametrosParaFacade_05 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
            /*
             * 505
             */ String[] parametrosParaFacade_06 = {"mp_trabajad_orig", "" + map.get("mp_trabajad")};
            /*
             * 506
             */ String[] parametrosParaFacade_07 = {"mp_trabajad_dest", "||"};
            /*
             * 507
             */ String[] parametrosParaFacade_08 = {"mp_asunto", "017|" + observaciones.trim() + "|"};
            /*
             * 508
             */ map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_03, parametrosParaFacade_04, parametrosParaFacade_05, parametrosParaFacade_06, parametrosParaFacade_07, parametrosParaFacade_08});
            try {
                /*
                 * 509
                 */
                retorno_historial = svl_gestion_facade_web.facadeInterface.agregarHistorialDocumentoFacade(map);
            } catch (TramiteDocuException ex) {
                return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
            }
        }
        /*
         * 511
         */ return mensaje_bandeja;
    }

    private String imprimirDocumentoSvl(HttpServletRequest request) {
        /*
         * 515
         */ String[] parametrosParaFacade_01 = {"mp_cod_format", request.getParameter("fadfdsfsdfadsae1e21312321")};
        /*
         * 516
         */ String[] parametrosParaFacade_02 = {"mp_trabajad", ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado()};
        /*
         * 517
         */ Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02});
        /*
         * 518
         */ String mensaje_bandeja = actualizarBandejaGeneral(map);
        String retorno_historial;
        /*
         * 519
         */ if (mensaje_bandeja.indexOf("1|") != -1) {
            /*
             * 520
             */ String codigo_palito = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
            /*
             * 521
             */ String[] codigo_array = codigo_palito.split("-");
            /*
             * 522
             */ String[] parametrosParaFacade_03 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_array[0]};
            /*
             * 523
             */ String[] parametrosParaFacade_04 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_array[1]};
            /*
             * 524
             */ String[] parametrosParaFacade_05 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_array[2]};
            /*
             * 525
             */ String[] parametrosParaFacade_06 = {"mp_trabajad_orig", "" + map.get("mp_trabajad")};
            /*
             * 526
             */ String[] parametrosParaFacade_07 = {"mp_trabajad_dest", "||"};
            /*
             * 527
             */ String[] parametrosParaFacade_08 = {"mp_asunto", "021||"};
            /*
             * 528
             */ map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_03, parametrosParaFacade_04, parametrosParaFacade_05, parametrosParaFacade_06, parametrosParaFacade_07, parametrosParaFacade_08});
            try {
                /*
                 * 529
                 */
                retorno_historial = svl_gestion_facade_web.facadeInterface.agregarHistorialDocumentoFacade(map);
            } catch (TramiteDocuException ex) {
                return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
            }
        }
        /*
         * 531
         */ return mensaje_bandeja;
    }

    private String actualizarBandejaGeneral(Map<String, String> map) {
        /*
         * 534
         */ cls_json_data json_data;
        try {
            json_data = new cls_json_data(svl_gestion_facade_web.facadeInterface.actualizarBandejaDocumentoFacade(map));
        } catch (TramiteDocuException ex) {
            json_data = new cls_json_data("0-ERROR-" + ex.getUserException());
        }
        /*
         * 535
         */ return cls_utilitarios.generarContextoJsonDesdeObject(json_data);
    }

    private String obtenerDocumentoComoBandeja(HttpServletRequest request) {
        Cls_Trabajador usuario_session = (Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO);
        String codigo = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        String[] parametrosParaFacade_01 = {"mp_cod_format", codigo};
        String[] parametrosParaFacade_02 = {"param_filtro", request.getParameter("dasfgdhgfgsfds")};
        String[] parametrosParaFacade_03 = {"mp_trabajad", usuario_session.obtenerInformacionParaUsuarioLogueado()};
        Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03});
        cls_json_data json_data;
        try {
            json_data = new cls_json_data(svl_gestion_facade_web.facadeInterface.obtenerDocumentoPersonalBandejaFacade(map, usuario_session));
            String mensaje_reload_cont = svl_gestion_facade_web.facadeInterface.reiniciarContadorMensajesBandejaDocumentoFacade(map);
        } catch (TramiteDocuException ex) {
            json_data = new cls_json_data("0-ERROR-" + ex.getUserException());
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(json_data);
    }

    private String enviarMailCopiaDeDocumentos(HttpServletRequest request) {
        String[] arreglo_mails = request.getParameter(Cls_Parametros.Request_Docu_MAIL).split(",");
        String codigo_documento = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        String[] codigo_solo_documento_array = codigo_documento.split("-");
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_solo_documento_array[0]};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_solo_documento_array[1]};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_solo_documento_array[2]};
        Map map_datos_documento = cls_utilitarios.generarHashMapParaRequest(parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03);
        Cls_documento documento_con_toda_informacion;
        try {
            documento_con_toda_informacion = svl_gestion_facade_web.facadeInterface.obtenerDocumentoConTodaInformacionFacade(map_datos_documento);
        } catch (TramiteDocuException ex) {
            return "";
        }
        ArrayList array_mail = new ArrayList();
        for (String mailRequest : arreglo_mails) {
            array_mail.add(mailRequest);
        }

        Cls_Email mail = new Cls_Email();
        Map map = new HashMap();

        try {
            mail.setEmail(array_mail);
        } catch (Exception e) {
            e.printStackTrace();
        }
        map.put("object_mail", mail);
        map.put("tipo_docu_cabe", documento_con_toda_informacion.getCabecera().replace("°", "."));
        map.put("mp_asunto", documento_con_toda_informacion.getAsunto());
        map.put("mp_cod_format", new Cls_Seguridad_DESBase64().encriptar(documento_con_toda_informacion.obtenerCodigoConcatenado()));

        return "";
    }

    private String enviarCopiaParaEmailDesdeDerivacionSvl(HttpServletRequest request) {
        String[] ar = request.getParameter("dsagsiuoqwppeiuasgfdsfa").split(",");
        String codigo_documento = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        String destinatarios_con_cargos = request.getParameter(Cls_Parametros.Request_Docu_DESTINATARIOS);
        String[] codigo_solo_documento_array = codigo_documento.split("-");
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_solo_documento_array[0]};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_solo_documento_array[1]};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_solo_documento_array[2]};
        Map map_datos_documento = cls_utilitarios.generarHashMapParaRequest(parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03);
        Cls_documento documento_con_toda_informacion;
        try {
            documento_con_toda_informacion = svl_gestion_facade_web.facadeInterface.obtenerDocumentoConTodaInformacionFacade(map_datos_documento);
        } catch (TramiteDocuException ex) {
            return "";
        }

        ArrayList array_mail = new ArrayList();
        for (String mailRequest : ar) {
            array_mail.add(mailRequest);
        }
        Cls_Email mail = new Cls_Email();
        Map map = new HashMap();
        try {
            mail.setEmail(array_mail);
        } catch (Exception e) {
            e.printStackTrace();
        }

        map.put("object_mail", mail);
        map.put("tipo_docu_cabe", documento_con_toda_informacion.getCabecera().replace("°", "."));
        map.put("mp_asunto", documento_con_toda_informacion.getAsunto());
        map.put("mp_cod_format", new Cls_Seguridad_DESBase64().encriptar(documento_con_toda_informacion.obtenerCodigoConcatenado()));
        try {
            enviarMailFacade(map);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return "";
    }

    private String enviarMailDocumentos(HttpServletRequest request) {
        String emails = request.getParameter("dsagsiuoqwppeiuasgfdsfa");
        String[] ar = {};
        if (emails != null && !emails.isEmpty()) {
            ar = emails.split(",");
        }
        String codigo_documento = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO);
        String[] codigo_documento_array = codigo_documento.split("#");

        String codigo_solo_documento = new Cls_Seguridad_DESBase64().desencriptar(codigo_documento_array[1]);
        String[] codigo_solo_documento_array = codigo_solo_documento.split("-");
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo_solo_documento_array[0]};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo_solo_documento_array[1]};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo_solo_documento_array[2]};
        Map map_datos_documento = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03});
        Cls_documento documento_con_toda_informacion;
        try {
            documento_con_toda_informacion = svl_gestion_facade_web.facadeInterface.obtenerDocumentoConTodaInformacionFacade(map_datos_documento);
        } catch (TramiteDocuException ex) {
            return null;
        }

        ArrayList array_mail = new ArrayList();
        for (String mailRequest : ar) {
            array_mail.add(mailRequest);
        }
        Cls_Email mail = new Cls_Email();
        Map map = new HashMap();

        mail.setEmail(array_mail);

        map.put("object_mail", mail);
        map.put("tipo_docu_cabe", documento_con_toda_informacion.getCabecera().replace("°", "."));
        map.put("mp_asunto", documento_con_toda_informacion.getAsunto());
        map.put("mp_cod_format", new Cls_Seguridad_DESBase64().encriptar(documento_con_toda_informacion.obtenerCodigoConcatenado()));
        return enviarMailFacade(map);
    }

    private String enviarMailFacade(Map<String, Object> map) {
        Cls_Email mail = (Cls_Email) map.get("object_mail");
        mail.setMensateSubject(TipoEmailElementsEnum.ASUNTO_DOCUMENTO_GENERADO.getValor());
        mail.setRemitente(TipoEmailElementsEnum.REMITENTE.getValor());
        String html = "<table><tr><img src=\"" + Cls_Parametros.IP_WEBSERVICE + Cls_Parametros.PORT_WEBSERVICE + "tramitedocuweb/images/logo-epsgrau.jpg\"<td><h2><strong><u><font color='#5882FA'/>SISTEMA WEB DE TRAMITE DOCUMENTARIO</u></strong></h2></td></tr><tr><td><i><font color='#5882FA'/>Un Documento ha sido Generado Para Usted</i><td></tr><tr><td><br></td></tr><tr><td>Documento: \n\n\t\t\t<strong>" + map.get("tipo_docu_cabe") + " </strong><td></tr>" + "<tr><td>Asunto: " + "\n\n\t\t\t <strong>" + map.get("mp_asunto") + " </strong><td></tr>" + "<tr><td><br></td></tr>" + "<tr><td>Si desea ver los detalles hacer click en el Siguiente Link</td></tr>" + "<tr><td><br></tr>" + "<tr><td><a href='" + Cls_Parametros.IP_WEBSERVICE + Cls_Parametros.PORT_WEBSERVICE + "tramitedocuweb/Visualizar.jsp?" + Cls_Parametros.Request_Codigo_DOCUMENTO + "=" + map.get("mp_cod_format") + "'>Visualizar</a></td></tr></table>";

        mail.setMensajeText(html);
        try {
            svl_gestion_facade_web.facadeInterface.enviarMensaje(mail);
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data());
    }

    private String eliminarBorradorSvl(HttpServletRequest request) {
        String codigo_borrador = request.getParameter(Cls_Parametros.Request_Borrador_CODIGO_POSTI).split("#")[0];
        String codigo_usuario = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getCodigo();
        String parametrofacade_01[] = {Cls_Parametros.Map_CODIGO_DOCUMENTO_FORMATEADO, codigo_borrador.trim()};
        String parametrofacade_02[] = {Cls_Parametros.Map_DNI, codigo_usuario.trim()};
        Map map = cls_utilitarios.generarHashMapParaRequest(parametrofacade_01, parametrofacade_02);
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.facadeInterface.eliminarPositBorradorDeBandejaFacade(map)));
    }

    private String generarBorradorSvl(HttpServletRequest request) {
        Cls_Borrador borradorBean = new Cls_Borrador();//Creamos el objeto que se enviara por el 'Map'
        borradorBean.setQuien_elabora(request.getParameter(Cls_Parametros.Request_Borrador_ELABORA_DOCU));
        borradorBean.setMensaje_quien_elabora(request.getParameter(Cls_Parametros.Request_Borrador_ELABORA_DOCU_MENSAJE));
        borradorBean.setTipo_documento(request.getParameter(Cls_Parametros.Request_Docu_TIPO_DOCUMENTO));
        borradorBean.setDestinatarios(request.getParameter(Cls_Parametros.Request_Docu_DESTINATARIOS).split(";"));
        borradorBean.setAsunto(request.getParameter(Cls_Parametros.Request_Docu_ASUNTO));
        borradorBean.setReferencia(request.getParameter(Cls_Parametros.Request_Docu_REFERENCIAS).split(";"));
        borradorBean.setCuerpo(request.getParameter(Cls_Parametros.Request_Docu_CUERPO));
        borradorBean.setCon_copia_usuarios(request.getParameter(Cls_Parametros.Request_Docu_COPIA_A).split(";"));
        borradorBean.setFirma(((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerFirmaDocumento());
        borradorBean.setUsuario_logueado(((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerInformacionParaUsuarioLogueado());
        Map<String, Object> map = new HashMap<String, Object>();
        map.put(Cls_Parametros.Objeto_BORRADOR, borradorBean);
        try {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(svl_gestion_facade_web.facadeInterface.agregarBorradorFacade(map)));
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-ERROR: " + ex.getUserException()));
        }
    }

    private String generarDocumento(HttpServletRequest request) {

        Cls_Trabajador trabajador = (Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO);
        boolean va_a_proyectar_documento = trabajador.getVa_proyectar() != null ? trabajador.getVa_proyectar().booleanValue() : false;
        Cls_documento documento = new Cls_documento();
        StringBuilder respuestaBuilder;
        documento.setTipo_documento(request.getParameter(Cls_Parametros.Request_Docu_TIPO_DOCUMENTO));
        documento.setAsunto(request.getParameter(Cls_Parametros.Request_Docu_ASUNTO));
        documento.setCuerpo(request.getParameter(Cls_Parametros.Request_Docu_CUERPO));
        documento.setDestinatarios(request.getParameter(Cls_Parametros.Request_Docu_DESTINATARIOS).split(";"));
        documento.setReferencia(request.getParameter(Cls_Parametros.Request_Docu_REFERENCIAS).split(";"));
        documento.setFecha_respuesta(request.getParameter(Cls_Parametros.Request_Docu_FECHA_FIN));
        documento.setCon_copia_usuarios(request.getParameter(Cls_Parametros.Request_Docu_COPIA_A).split(";"));
        documento.setCabecera(request.getParameter(Cls_Parametros.Request_Docu_CABECERA));

        if (documento.getTipo_documento().compareToIgnoreCase("999") == 0) {
            va_a_proyectar_documento = false;
            documento.setPersona_emite_documento(request.getParameter(Cls_Parametros.Request_Docu_PROCEDENCIA));
        } else {
            if (request.getParameter(Cls_Parametros.Request_IS_PROYECTADO) != null) {
                va_a_proyectar_documento = Boolean.parseBoolean(request.getParameter(Cls_Parametros.Request_IS_PROYECTADO));
                if (request.getParameter(Cls_Parametros.Request_TIPO_PROYECCION) != null) {
                    documento.setTipo_proyeccion(request.getParameter(Cls_Parametros.Request_TIPO_PROYECCION));
                }
            }
        }

        documento.setCodigo_directiva(va_a_proyectar_documento ? request.getParameter(Cls_Parametros.Request_Docu_DIRECTIVA).split(";")
                : (trabajador.getCodigo_area() + "|" + trabajador.getArea() + "|" + trabajador.getCodigo_visto_bueno() + "|;").split(";"));
        documento.setIsProyectado(va_a_proyectar_documento);
        documento.setFirma(va_a_proyectar_documento ? request.getParameter(Cls_Parametros.Request_Docu_FIRMA)
                : ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).obtenerFirmaDocumento());


        documento.setCodigo_empresa(request.getParameter(Cls_Parametros.Request_Docu_COD_EMPRESA));
        documento.setCodigo_directiva_pertenece(request.getParameter(Cls_Parametros.Request_Docu_DIRECTIVA_PERTENECE));
        boolean va_a_modificar = false;
        try {
            if (("" + request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO)).trim().length() != 0) {
                String[] codigo = ("" + request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO)).trim().split(";");
                documento.setNumero_documento(Integer.parseInt(codigo[0]));
                documento.setAnhio(codigo[1]);
                va_a_modificar = true;
            }
        } catch (NumberFormatException ex) {
            ex.printStackTrace();
        }
        if (!va_a_proyectar_documento) {
            documento.setTipo_proyeccion("0");
        }
        if (va_a_modificar) {
            trabajador.setCodigo_area(request.getParameter(Cls_Parametros.Request_Docu_FIRMA).substring(0, 4));

        }
        documento.setUsuario_logueado(trabajador.obtenerInformacionParaUsuarioLogueado());
        try {
            respuestaBuilder = new StringBuilder(va_a_modificar ? svl_gestion_facade_web.facadeInterface.actualizarDocumentoFacade(documento)
                    : svl_gestion_facade_web.facadeInterface.agregarDocumentoFacade(documento));

            String solo_codigo;
            if (va_a_modificar) {
                solo_codigo = documento.obtenerCodigoConcatenado();
            } else {
                solo_codigo = respuestaBuilder.substring(respuestaBuilder.toString().lastIndexOf(Cls_Parametros.CHARACTER_SEPARATOR_UNKNOW),
                        respuestaBuilder.toString().length()).
                        toString().substring(Cls_Parametros.CHARACTER_SEPARATOR_UNKNOW.length());
                respuestaBuilder.delete(respuestaBuilder.toString().lastIndexOf(Cls_Parametros.CHARACTER_SEPARATOR_UNKNOW), respuestaBuilder.toString().length());
            }
            respuestaBuilder.append("#").append(new Cls_Seguridad_DESBase64().encriptar(solo_codigo));
            String codigo_largo = request.getParameter(Cls_Parametros.Request_Codigo_LARGO_DOCUMENTO);
            if (codigo_largo.length() != 0) {
                Map map = new HashMap();
                map.put(Cls_Parametros.Map_CODIGO_DOCUMENTO_FORMATEADO, codigo_largo);
                map.put(Cls_Parametros.Map_TRABAJADOR_DATA, trabajador.obtenerInformacionParaUsuarioLogueado());
                actualizarBandejaGeneral(map);
            }
            if (!((ArrayList) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO_LIST)).isEmpty()) {
                guardarExtensionDeArchivoAdjuntoDeDocumento(solo_codigo, request);
                svl_gestion_genera_flash.moverPdfDesdeDni(solo_codigo, trabajador.getCodigo(), (ArrayList) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO_LIST));
            }

            crearDocumento(solo_codigo);
            if (cls_utilitarios.areStringEquals(documento.getTipo_documento(), Cls_Parametros.TIPO_DOCUMENTO_EXTERNO)) {
                respuestaBuilder.append("#").append(solo_codigo);
            }
        } catch (TramiteDocuException ex) {
            respuestaBuilder = new StringBuilder("0-ERROR-ERROR: " + ex.getUserException());
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(respuestaBuilder.toString()));
    }

    private String cargarDocumentos(HttpServletRequest request) {
        Map map = Cls_UtilesParaWeb.obtenerParametrosDeGrilla(request);
        Map map_docu = Cls_UtilesParaWeb.obtenerParametrosParaGrillaDocumento(request);
        map = cls_utilitarios.generarHashMapParaRequest(new Map[]{map, map_docu});
        ArrayList arrayDocumentos = svl_gestion_facade_web.facadeInterface.obtenerTodosDocumentoFacade(map);
        cls_json_data json_data = new cls_json_data(arrayDocumentos, 1, new int[]{new Integer(request.getParameter("page")).intValue(), svl_gestion_facade_web.facadeInterface.obtenerCantidadDeRegistrosFacade(map)});
        return cls_utilitarios.generarContextoJsonDesdeObject(json_data);
    }

    private String cargarDocumentosPersonales(HttpServletRequest request) {
        Map map = Cls_UtilesParaWeb.obtenerParametrosDeGrilla(request);
        String[] parametrosParaFacade_01 = {Cls_Parametros.Request_DATO_A_BUSCAR, ""};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Request_PAGINA, "1"};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Request_CANTIDAD_REGISTROS, "100"};
        String[] parametrosParaFacade_04 = {Cls_Parametros.Request_CODIGO_DIRECTIVA, null};

        int esJefe = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getTipo_usuario_area();
        String codigo = (esJefe == 3) || (esJefe == 1) ? ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getCodigo_area().trim() : ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getCodigo().trim();

        map.put(Cls_Parametros.Map_DNI, codigo);

        ArrayList jerarquia_areas = new ArrayList();
        Map map_para_unidades = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03, parametrosParaFacade_04});

        if (request.getParameter(Cls_Parametros.Request_ARRAY_SELECCIONADO).compareToIgnoreCase("A") == 0) {
            String cod_area = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getCodigo_area();
            String cod_directiva = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getCodigo_visto_bueno();
            jerarquia_areas.add(cod_area);

            map.put(Cls_Parametros.Request_AREAS_JERARQUIA, cls_utilitarios.generarStringDesdeArray(jerarquia_areas));

            ArrayList arrayDocumentos = svl_gestion_facade_web.facadeInterface.obtenerTodosDocumentoPersonalesDeAreaFacade(map);
            cls_json_data json_data = new cls_json_data(arrayDocumentos, 1, new int[]{new Integer(request.getParameter("page")).intValue(), svl_gestion_facade_web.facadeInterface.obtenerCantidadDeDocumentosPersonalesAreaFacade(map)});

            return cls_utilitarios.generarContextoJsonDesdeObject(json_data);
        }
        ArrayList arrayDocumentos = svl_gestion_facade_web.facadeInterface.obtenerTodosDocumentoPersonalesFacade(map);
        cls_json_data json_data = new cls_json_data(arrayDocumentos, 1, new int[]{new Integer(request.getParameter("page")).intValue(), svl_gestion_facade_web.facadeInterface.obtenerCantidadDeDocumentosPersonalesFacade(map)});

        return cls_utilitarios.generarContextoJsonDesdeObject(json_data);
    }

    private String cargarDocumentoConTodaInformacion(HttpServletRequest request) {
        String[] codigo = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO).split("-");
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo[0]};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo[1]};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo[2]};
        Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03});
        cls_json_data json_data;
        try {
            json_data = new cls_json_data(svl_gestion_facade_web.facadeInterface.obtenerDocumentoConTodaInformacionFacade(map));
            svl_gestion_facade_web.facadeInterface.obtenerDocumentoConTodaInformacionFacade(map).getRespuesta_vistos();
        } catch (TramiteDocuException ex) {
            json_data = new cls_json_data("0-ERROR-" + ex.getUserException());
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(json_data);
    }

    private Cls_documento cargarDocumentoConTodaInformacionObject(HttpServletRequest request) throws TramiteDocuException {
        String[] codigo = request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO).split("-");
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, codigo[0]};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, codigo[1]};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, codigo[2]};
        Map map = cls_utilitarios.generarHashMapParaRequest(new String[][]{parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03});
        return svl_gestion_facade_web.facadeInterface.obtenerDocumentoConTodaInformacionFacade(map);
    }

    public static String crearDocumento(String archivo) throws TramiteDocuException {
        Connection cn = null;
        InputStream fin = null;
        try {
            System.gc();
            cn = svl_gestion_facade_web.getFacade().getConectionSistema().getConnection();
            Map parameters = new HashMap();
            String[] valores = archivo.split("-");

            String fileName = "";
            if ((valores[0].compareToIgnoreCase("006") == 0) || (valores[0].compareToIgnoreCase("010") == 0)) {
                fileName = svl_gestion_facade_web_documento.confStatic.getServletContext().getRealPath("/reportes/rpt_oficio_carta.jasper");
            } else if (valores[0].compareToIgnoreCase("001") == 0) /*
             * 790
             */ {
                fileName = svl_gestion_facade_web_documento.confStatic.getServletContext().getRealPath("/reportes/rpt_resolucion.jasper");
            } else {
                fileName = svl_gestion_facade_web_documento.confStatic.getServletContext().getRealPath("/reportes/rpt_memrorando_simple.jasper");
            }

            fin = new FileInputStream(new File(svl_gestion_facade_web_documento.confStatic.getServletContext().getRealPath("/reportes/imagenes/logo.jpg")));

            parameters.put("param_imagen", fin);
            parameters.put(Cls_Parametros.Map_NUMERO_DOCUMENTO, Long.valueOf(valores[1]));
            parameters.put(Cls_Parametros.Map_TIPO_DOCUMENTO, valores[0]);
            parameters.put(Cls_Parametros.Map_ANHIO_DOCUMENTO, valores[2]);
            JasperPrint jasperPrint = JasperFillManager.fillReport(fileName, parameters, cn);
            JRExporter exporter = null;
            exporter = new JRPdfExporter();
            String[] codigo_array = archivo.split("-");
            String url = Cls_Parametros.RUTA_DOCUMENTOS_SERVIDOR2 + "/" + codigo_array[2] + "/" + archivo + ".pdf";
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, url);
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.exportReport();
            System.gc();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, ex);
            throw new TramiteDocuException(ex.getClass().getSimpleName());
        } catch (SQLException ex) {
            Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, ex);
            throw new TramiteDocuException(ex.getClass().getSimpleName());
        } catch (JRException ex) {
            Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, ex);
            throw new TramiteDocuException(ex.getClass().getSimpleName());
        } catch (IOException ex) {
            Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, ex);
            throw new TramiteDocuException(ex.getClass().getSimpleName());
        } finally {
            try {
                cn.close();
                fin.close();
            } catch (IOException ex) {
            } catch (SQLException ex) {
            } catch (NullPointerException ex) {
            }
        }
        return "";
    }

    private String crearDocumentoVistaPrevia(String archivo, Object documento) throws TramiteDocuException {
        Connection cn = null;
        InputStream fin = null;
        Cls_Documento_Vista_Previa documento_vista_previa = null;
        documento_vista_previa = (Cls_Documento_Vista_Previa) documento;
        String valores[] = archivo.split("-");
        String codigo_archivo = valores[1] + "_VP_" + valores[2];
        try {
            System.gc();
            cn = svl_gestion_facade_web.getFacade().getConectionSistema().getConnection();
            Map parameters = new HashMap();

            String fileName = "";
            if (valores[0].compareToIgnoreCase("006") == 0 || valores[0].compareToIgnoreCase("010") == 0) {
                fileName = conf.getServletContext().getRealPath("/reportes/rpt_oficio_carta_vista_previa.jasper");
            } else {
                if (valores[0].compareToIgnoreCase("001") == 0) {
                    fileName = conf.getServletContext().getRealPath("/reportes/rpt_resolucion_vista_previa.jasper");
                } else {
                    fileName = conf.getServletContext().getRealPath("/reportes/rpt_memrorando_simple_vista_previa.jasper");
                }
            }

            fin = new FileInputStream(new File(conf.getServletContext().getRealPath("/reportes/imagenes/logo.jpg")));
            parameters.put(Cls_Parametros.Map_IMAGEN, fin);

            List<Cls_Documento_Vista_Previa> listaDocumentos = new ArrayList<Cls_Documento_Vista_Previa>();
            listaDocumentos.add(documento_vista_previa);

            JasperReport reporte = (JasperReport) JRLoader.loadObject(fileName);
            JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, parameters, new JRBeanCollectionDataSource(listaDocumentos));

            JRExporter exporter = null;
            exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, Cls_Parametros.RUTA_DOCUMENTOS_SERVIDOR2 + codigo_archivo + ".pdf");
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.exportReport();
            System.gc();
        } catch (JRException j) {
            Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, j);
            throw new TramiteDocuException(j.getClass().getSimpleName());
        } catch (IOException j) {
            Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, j);
            throw new TramiteDocuException(j.getClass().getSimpleName());
        } catch (SQLException j) {
            Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, j);
            throw new TramiteDocuException(j.getClass().getSimpleName());
        } finally {
            try {
                cn.close();
                fin.close();
            } catch (IOException ex) {
                Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(svl_gestion_facade_web_documento.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        String ruta = svl_gestion_genera_flash.generarFlashParaVistaPrevia(codigo_archivo);
        return ruta;
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    private void generarFlash(String archivo) {
        String rutapdf = Cls_Parametros.RUTA_DOCUMENTOS_SERVIDOR2 + archivo + ".pdf";
        String rutafinal = this.conf.getServletContext().getRealPath("fileswf") + "/" + archivo + ".swf";
        String cadena = "pdf2swf -o " + rutafinal + " " + rutapdf + " -T 9 -f";
        try {
            String[] command = {"sh", "-c", cadena};
            Process process = Runtime.getRuntime().exec(command);
            InputStream is = process.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String aux = br.readLine();
            while (aux != null) {
                aux = br.readLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.gc();
    }

    private String cargarDocumentosProyectos(HttpServletRequest request) {
        String codigo_usuario[] = {Cls_Parametros.Map_DNI, ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO)).getCodigo().trim()};
        Map map = Cls_UtilesParaWeb.obtenerParametrosDeGrilla(request);
        Map map_docu = Cls_UtilesParaWeb.obtenerParametrosParaGrillaDocumento(request);
        map = cls_utilitarios.generarHashMapParaRequest(new Map[]{map, map_docu, cls_utilitarios.generarHashMapParaRequest(codigo_usuario)});
        ArrayList arrayDocumentos = svl_gestion_facade_web.facadeInterface.obtenerTodosDocumentoProyectosPendientesFacade(map);
        cls_json_data json_data = new cls_json_data(arrayDocumentos, 1, new int[]{new Integer(request.getParameter("page")).intValue(), svl_gestion_facade_web.facadeInterface.obtenerCantidadDeRegistrosFacade(map)});
        return cls_utilitarios.generarContextoJsonDesdeObject(json_data);
    }

    /** ESTE METODO ME PERMITE RETORNAR EL RESPONSABLE DE MODIFICAR EL DOCUMENTO, EN CASO
     *  LA SOLICITUD SEA A NIVEL DE JEFATURAS RETORNARA A EL RESPONSABLE DE LA UNIDAD ORGANICA
     *  DE DONDE SE GENERO EL DOCUMENTO SIENDO NO NECESARIAMENTE EL JEFE QUIEN LO HAYA GENERADO*/
    private String solicitarResponsableDeModificar(HttpServletRequest request) {
        Cls_Trabajador trabajadorSession, trabajadorResponsableModificarDoc = null;
        Cls_documento documento = cls_utilitarios.obtenerObjetoDocumentoDesdeCodigo(request.getParameter(Cls_Parametros.Request_Codigo_DOCUMENTO));
        String[] parametrosParaFacade_01 = {Cls_Parametros.Map_TIPO_DOCUMENTO, documento.getTipo_documento()};
        String[] parametrosParaFacade_02 = {Cls_Parametros.Map_NUMERO_DOCUMENTO, "" + documento.getNumero_documento()};
        String[] parametrosParaFacade_03 = {Cls_Parametros.Map_ANHIO_DOCUMENTO, documento.getAnhio()};
        Map map_datos_documento = cls_utilitarios.generarHashMapParaRequest(parametrosParaFacade_01, parametrosParaFacade_02, parametrosParaFacade_03);
        try {
            documento = svl_gestion_facade_web.facadeInterface.obtenerDocumentoConTodaInformacionFacade(map_datos_documento);
        } catch (TramiteDocuException ex) {
            return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data("0-ERROR-" + ex.getUserException()));
        }
        trabajadorSession = ((Cls_Trabajador) request.getSession().getAttribute(Cls_Parametros.Session_OBJETO_USUARIO));

        if (cls_utilitarios.areStringEquals(trabajadorSession.getCodigo_area(), documento.getCodigo_area_crea_documento())) {
            trabajadorResponsableModificarDoc = cls_utilitarios.obtenerTrabajadorDesdeDNI(documento.getUsuario_crea_documento());
        } else {
            Cls_Trabajador jefeAreaDondeSeCreoDocumento = cls_utilitarios.obtenerTrabajadorDesdeDNI(documento.getCodigo_area_crea_documento());
            if (cls_utilitarios.areStringEquals(trabajadorSession.getCodigo_area(), jefeAreaDondeSeCreoDocumento.getCod_area_pertenece())) {
                trabajadorResponsableModificarDoc = jefeAreaDondeSeCreoDocumento;

            } else {
                Cls_Trabajador jefeAreaPerteneceDondeSeCreoDocumento = cls_utilitarios.obtenerTrabajadorDesdeDNI(jefeAreaDondeSeCreoDocumento.getCod_area_pertenece());
                if (cls_utilitarios.areStringEquals(trabajadorSession.getCodigo_area(), jefeAreaPerteneceDondeSeCreoDocumento.getCod_area_pertenece())) {
                    trabajadorResponsableModificarDoc = jefeAreaPerteneceDondeSeCreoDocumento;

                }
            }
            /**
             *EN EL CASO DE EL DESTINATARIO EN LA SOLICITUD DE MODIFICACION, DEBERIA SER EL CODIGO DEL AREA
             *YA QUE LLEGARA AL JEFE DEL AREA.
             */
            trabajadorResponsableModificarDoc.setCodigo(trabajadorResponsableModificarDoc.getCodigo_area());
        }
        return cls_utilitarios.generarContextoJsonDesdeObject(new cls_json_data(trabajadorResponsableModificarDoc));
    }
}
